home *** CD-ROM | disk | FTP | other *** search
/ New Star Software Collection / NSS_Collection.iso / 3-222 caligari true space / 1.ima / SETUP.MST < prev    next >
Text File  |  1993-11-19  |  7KB  |  278 lines

  1. '**************************************************************************
  2. '*                       trueSpace 1.0 Setup
  3. '**************************************************************************
  4.  
  5. '***'$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST APPHELP       = 900
  18. CONST BADPATH       = 6400
  19. CONST SMALLWIN      = 2200
  20. CONST RESTART       = 2600
  21. CONST RESTARTII     = 2700
  22.  
  23. ''Bitmap ID
  24. CONST LOGO = 1
  25.  
  26. GLOBAL SizeReq&  '' Total Disk Size required for installation
  27.  
  28. ''File Types
  29. GLOBAL WinDir$
  30. GLOBAL WinSysDir$
  31. GLOBAL WINDRIVE$    ''Windows Drive Letter.
  32. GLOBAL DEST$        ''Default destination directory.
  33. GLOBAL HasMath%     ''has math coprocessor
  34. GLOBAL HasEMU%      ''math emulator already installed    
  35.  
  36. DECLARE SUB Install
  37. DECLARE SUB EMUInstall
  38. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  39. DECLARE SUB Reboot LIB "iniupd.dll"
  40. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  41.  
  42.  
  43. INIT:
  44.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  45.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  46.  
  47.     SetBitmap CUIDLL$, LOGO
  48.     SetTitle "Caligari trueSpace 1.0"
  49.  
  50.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  51.     IF szInf$ = "" THEN
  52.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  53.     END IF
  54.     ReadInfFile szInf$
  55.  
  56.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  57.     DEST$ = WINDRIVE$ + ":\truspace"
  58.  
  59. WELCOME:
  60.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  61.     IF sz$ = "CONTINUE" THEN
  62.         UIPop 1
  63.     ELSE
  64.         GOSUB ASKQUIT
  65.         GOTO WELCOME
  66.     END IF
  67.  
  68.  
  69. GETPATH:
  70.     SetSymbolValue "EditTextIn", DEST$
  71.     SetSymbolValue "EditFocus", "END"
  72. GETPATHL1:
  73.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  74.     DEST$ = GetSymbolValue("EditTextOut")
  75.  
  76.     IF sz$ = "CONTINUE" THEN
  77.         IF IsDirWritable(DEST$) = 0 THEN
  78.             GOSUB BADPATH
  79.             GOTO GETPATHL1
  80.         END IF
  81.         UIPop 1
  82.     ELSEIF sz$ = "REACTIVATE" THEN
  83.         GOTO GETPATHL1
  84.     ELSEIF sz$ = "BACK" THEN
  85.         UIPop 1
  86.         GOTO WELCOME
  87.     ELSE
  88.         GOSUB ASKQUIT
  89.         GOTO GETPATH
  90.     END IF
  91.  
  92.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  93.     WinDir$ = GetWindowsDir()
  94.     WinSysDir$ = GetWindowsSysDir()
  95.     HasMath% = Has87MathChip()
  96.  
  97.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  98.     AddSectionFilesToCopyList "OBJECTS", SrcDir$, DEST$ + "\OBJECTS"
  99.     AddSectionFilesToCopyList "SCENES", SrcDir$, DEST$ + "\SCENES"
  100.     AddSectionFilesToCopyList "BUMPS", SrcDir$, DEST$ + "\BUMPS"
  101.     AddSectionFilesToCopyList "TEXTURES", SrcDir$, DEST$ + "\TEXTURES"
  102.     AddSectionFilesToCopyList "ENVIRMNT", SrcDir$, DEST$ + "\ENVIRMNT"
  103.     IF HasMath% < 1 THEN
  104.         AddSectionFilesToCopyList "Emulator", SrcDir$, WinSysDir$
  105.     END IF
  106.  
  107. ''  Check windrive diskspace
  108.     SizeReq& = GetCopyListCost ("","", "")
  109.     IF SizeReq& <> 0 THEN
  110.     GOSUB SMALLWIN
  111.     END
  112.     END IF
  113.  
  114.  
  115.     Install
  116.  
  117. '' If no emulator installed then no need to restart windows
  118.    IF HasMath%  > 0 THEN
  119.         GOTO QUIT
  120.    ENDIF
  121. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  122. '' else, it gives the user the choice
  123.     RESTRT% = RestartListEmpty ()
  124.     Exe$ = DEST$ + "\_msrstrt.exe"
  125.     Batch$ = DEST$ + "\_mssetup.bat"
  126.     empty$ = ""
  127. RESTART:
  128.     IF RESTRT% = 0 THEN
  129.        sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  130.        IF sz$ = "REACTIVATE" THEN
  131.       GOTO RESTART
  132.        ENDIF
  133.        I% = ExitExecRestart ()
  134.        RemoveFile Exe$, cmoForce
  135.        RemoveFile Batch$, cmoForce
  136.        END
  137.     ELSE
  138.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  139.        IF sz$ = "CONTINUE" THEN
  140.       I% = ExitWindowsExec (Exe$, empty$)
  141.       IF I% = 0 THEN
  142.          GOTO RESTART
  143.       ELSE
  144.          END
  145.      ENDIF
  146.        ELSEIF sz$ = "EXIT" THEN
  147.       UIPopAll
  148.       END
  149.        ELSEIF sz$ = "REACTIVATE" THEN
  150.       GOTO RESTART
  151.        ELSE
  152.       UIPop 1
  153.        END IF
  154.     END IF
  155.  
  156.  
  157. QUIT:
  158.     ON ERROR GOTO ERRQUIT
  159.  
  160.     IF ERR = 0 THEN
  161.     dlg% = EXITSUCCESS
  162.     ELSEIF ERR = STFQUIT THEN
  163.     dlg% = EXITQUIT
  164.     ELSE
  165.     dlg% = EXITFAILURE
  166.     END IF
  167. QUITL1:
  168.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  169.     IF sz$ = "REACTIVATE" THEN
  170.     GOTO QUITL1
  171.     END IF
  172.     UIPop 1
  173.     END
  174.  
  175. ERRQUIT:
  176.     i% = DoMsgBox("An installation problem occured, call the product support service", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  177.     END
  178.  
  179.  
  180. ASKQUIT:
  181.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  182.  
  183.     IF sz$ = "EXIT" THEN
  184.     UIPopAll
  185. ''        ERROR STFQUIT
  186.     END
  187.     ELSEIF sz$ = "REACTIVATE" THEN
  188.     GOTO ASKQUIT
  189.     ELSE
  190.     UIPop 1
  191.     END IF
  192.     RETURN
  193.  
  194. SMALLWIN:
  195.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  196.     IF sz$ = "REACTIVATE" THEN
  197.     GOTO SMALLWIN
  198.     END IF
  199.     UIPop 1
  200.     RETURN
  201.  
  202.  
  203. BADPATH:
  204.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  205.     IF sz$ = "REACTIVATE" THEN
  206.         GOTO BADPATH
  207.     END IF
  208.     UIPop 1
  209.     RETURN
  210.  
  211.  
  212. '**
  213. '** Purpose:
  214. '**     performs all installation operations.
  215. '** Arguments:
  216. '**     none.
  217. '** Returns:
  218. '**     none.
  219. '*************************************************************************
  220. SUB Install STATIC
  221.  
  222.     CreateDir DEST$, cmoNone
  223.  
  224.     CopyFilesInCopyList
  225.  
  226.     IF HasMath% < 1 THEN
  227.         EMUInstall
  228.     END IF
  229.  
  230.     CreateProgmanGroup "trueSpace", "", cmoNone
  231.     ShowProgmanGroup  "trueSpace", 1, cmoNone
  232.     CreateProgmanItem "trueSpace", "trueSpace", MakePath(DEST$,"truespac.exe"), "", cmoOverwrite
  233.     CreateProgmanItem "trueSpace", "Readme", MakePath(DEST$,"readme10.wri"), "", cmoOverwrite
  234.  
  235. END SUB
  236.  
  237. '**
  238. '** Purpose:
  239. '**     install math emulator in system.ini file
  240. '** Arguments:
  241. '**     none.
  242. '** Returns:
  243. '**     none.
  244. '*************************************************************************
  245. SUB EMUInstall STATIC
  246.  
  247.     HasEMU% = DoesIniKeyExist("system.ini", "386Enh", "wemu")
  248.     IF HasEMU% < 1 THEN
  249.         CreateIniKeyValue WinDir$ + "system.ini", "386Enh", "wemu", "installed", cmoOverwrite
  250.         CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "wemu387.386", cmoOverwrite
  251.     END IF
  252.  
  253. END SUB
  254.  
  255.  
  256.  
  257. '**
  258. '** Purpose:
  259. '**     Appends a file name to the end of a directory path,
  260. '**     inserting a backslash character as needed.
  261. '** Arguments:
  262. '**     szDir$  - full directory path (with optional ending "\")
  263. '**     szFile$ - filename to append to directory
  264. '** Returns:
  265. '**     Resulting fully qualified path name.
  266. '*************************************************************************
  267. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  268.     IF szDir$ = "" THEN
  269.         MakePath = szFile$
  270.     ELSEIF szFile$ = "" THEN
  271.         MakePath = szDir$
  272.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  273.         MakePath = szDir$ + szFile$
  274.     ELSE
  275.         MakePath = szDir$ + "\" + szFile$
  276.     END IF
  277. END FUNCTION
  278.